package it.espsoft.easysuperenalotto.logic;

import it.espsoft.easysuperenalotto.bean.GiocataBean;

import java.util.ArrayList;

import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;

public class ListGiocateAdapter extends BaseAdapter {
	private Context mContext;
	private ArrayList<CheckBox> checks = null;
	private ArrayList<GiocataBean> giocate = null;
	private int numChecked = 0;
	private Handler handler;
	
	public int getNumChecked() {
		return numChecked;
	}

	public ArrayList<GiocataBean> getGiocate() {
		return giocate;
	}

	public ArrayList<CheckBox> getChecks() {
		return checks;
	}

	public ListGiocateAdapter(Context context, ArrayList<GiocataBean> listaGiocate,Handler handler){
		mContext = context;
		checks = new ArrayList<CheckBox>();
		this.giocate = listaGiocate;
		this.handler = handler;
	}
	
	public int getCount() {
		return giocate.size();
	}

	public Object getItem(int position) {
		return giocate.get(position);
	}

	public long getItemId(int position) {
		return giocate.get(position).getId();
	}

	public View getView(int position, View convertView, ViewGroup parent) {
		final int pos = position;
		GiocateListItem item = null;
		
		OnClickListener editClick = new OnClickListener() {
			
			public void onClick(View v) {
				Message msg = new Message();
				msg.arg1 = 1;
				msg.arg2 = (int)getItemId(pos);
				handler.sendMessage(msg);
			}
		};
		
		OnCheckedChangeListener checkClick = new OnCheckedChangeListener() {
			public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
				numChecked = isChecked?numChecked+1:numChecked-1;
			}
		};
		
        if (convertView == null) {
        	item = new GiocateListItem(mContext);
        	item.createItem(giocate.get(position), giocate.get(position).getId(), checkClick, editClick);
            checks.add(item.getCheck());
        } else {
        	item = (GiocateListItem) convertView;
        }
        
        item.drawItem();
        return item;
	}

}
